package cn.xsw.utils;

import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;

@Component
public class FileUploadUtils {


    /**
     * 将 MultipartFile 转换为 File
     * @param file
     * @return
     * @throws IOException
     */
    public static File multipartFileToFile(MultipartFile file) throws IOException {

        File toFile = null;
        if (file.equals("") || file.getSize() <= 0) {
            file = null;
        } else {
            InputStream ins = file.getInputStream();
            toFile = new File(file.getOriginalFilename());
            inputStreamToFile(ins, toFile);
            ins.close();
        }
        return toFile;
    }

    //获取流文件
    private static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 删除本地临时文件
     * @param file
     */
    public static void deleteTempFile(File file) {
        if (file != null) {
            File del = new File(file.toURI());
            del.delete();
        }
    }


    /**
     * 上传文件
     * @param file
     * @return
     */
    public static String upload(MultipartFile file) throws IOException {
        FileDTO fd = new FileDTO(
                "oss-cn-hangzhou.aliyuncs.com",
                "LTAI4G2qpekoC6Ek7DCF4nVp",
                "qtvMUfyigCwsHDpETuY4Rz5nW1PYJD",
                "xsw-studio",
                "studio/",
                null);
        // 后缀名
        String suffix = file.getOriginalFilename()
                .substring(file.getOriginalFilename().lastIndexOf(".") + 1);
        // 上传到云上的文件名
        String filename = System.currentTimeMillis() + "." + suffix;
        // 将 MultipartFile 转换成 File
        File tempFile = multipartFileToFile(file);
        fd.setFile(tempFile);
        fd.setObjectName( fd.getObjectName() + filename);
        // 文件上传
        String url = AliyunOSS.providerUpload(fd);
        // 上传之后删除临时文件
        deleteTempFile(tempFile);
        return url;
    }

//    public static String appUpload(MultipartFile file, String versionName) throws IOException{
//        FileDTO fd = new FileDTO(
//                "oss-cn-hangzhou.aliyuncs.com",
//                "LTAI4G2qpekoC6Ek7DCF4nVp",
//                "qtvMUfyigCwsHDpETuY4Rz5nW1PYJD",
//                "xsw-jiaxing-cable",
//                "app/",
//                null);
//        // 后缀名
//        String suffix = file.getOriginalFilename()
//                .substring(file.getOriginalFilename().lastIndexOf(".") + 1);
//        // 上传到云上的文件名
//        String filename = "app_" + versionName + "." + suffix;
//        // 将 MultipartFile 转换成 File
//        File tempFile = multipartFileToFile(file);
//        fd.setFile(tempFile);
//        fd.setObjectName( fd.getObjectName() + filename);
//        // 文件上传
//        String url = AliyunOSS.providerUpload(fd);
//        // 上传之后删除临时文件
//        deleteTempFile(tempFile);
//        return url;
//    }

//    /**
//     * 上传文件 到本地
//     * @param file
//     * @return
//     */
//    public String upload(MultipartFile file) throws IOException {
//        String ip = cableConfig.getIp();
//
//        String profile = cableConfig.getProfile();
//        // 后缀名
//        String suffix = file.getOriginalFilename()
//                .substring(file.getOriginalFilename().lastIndexOf(".") + 1);
//        // 上传到服务器的文件名
//        String filename = System.currentTimeMillis() + "." + suffix;
//        profile = profile + filename;
//        File dest = new File(profile);
//        // 检测是否存在目录
//        if (!dest.getParentFile().exists()) {
//            dest.getParentFile().mkdirs();
//        }
//        file.transferTo(dest);
//        return ip + cableConfig.getResourceProfile() + "/" + filename;
//    }
//
//    // 上传App到本地
//    public String appUpload(MultipartFile file, String versionName) throws IOException{
//        String ip = cableConfig.getIp();
//
//        String profile = cableConfig.getProfile() + "app/";
//        // 后缀名
//        String suffix = file.getOriginalFilename()
//                .substring(file.getOriginalFilename().lastIndexOf(".") + 1);
//        // 上传到云上的文件名
//        String filename = "app_" + versionName + "." + suffix;
//        profile = profile + filename;
//        File dest = new File(profile);
//        // 检测是否存在目录
//        if (!dest.getParentFile().exists()) {
//            dest.getParentFile().mkdirs();
//        }
//        file.transferTo(dest);
//        return ip + cableConfig.getResourceProfile() + "/app/" + filename;
//    }

}
